/**
 * <p>版权所有：中企动力
 * <p>未经本公司许可，不得以任何方式复制或使用本程序任何部分
 */
package com.ce.pms.house.dao;

import java.util.List;

import com.ce.pms.base.dao.IPmsBaseDao;
import com.ce.pms.house.model.BuildingDomain;
import com.ce.pms.house.model.ChargePrecinctDomain;
import com.ce.pms.house.model.HouseGrp;

/**
 * 功能描述: IBuildingDao
 *
 * @author  付湘辉
 * Created on：  2008-6-25
 * @author  付湘辉
 * update on：  2008-6-25
 */

public interface IBuildingDao extends IPmsBaseDao<BuildingDomain> {
	/**
	 * 方法描述: 查询某个管理区下的楼栋
	 * @author 胡煦
	 * Create on:2008-10-21
	 * @param precinctId
	 * @return List<BuildingDomain>
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public List<BuildingDomain> getBuildingsByPrecinctId(Long precinctId);
	/**
	 * 功能描述: 根据建设期id和楼栋编号参数查询指定楼栋实体 <br>
	 * @param projectId
	 * @param buildingSeqNo
	 * @return BuildingDomain
	 * Create author:胡煦 <br>
	 * Create on:2008-8-25  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public BuildingDomain getBuildingByprojectId(Long projectId, Integer buildingSeqNo);
	/**
	 *
	 * 功能描述: 根据楼栋Id得到楼栋单元列表,如果指定的楼栋不分单元，返回一个不含数据的列表
	 *
	 * @author 付湘辉
	 * Created on:2008-6-25
	 *
	 * 修改原因：
	 * @param buildingId
	 * @return List 返回结果
	 */
	public List<HouseGrp> getBuildingCells(Long buildingId);

	/**
	 *
	 * 功能描述: 根据楼栋Id列表得到楼栋列表
	 *
	 * @author 胡煦
	 * Created on:2008-7-9
	 *
	 * 修改原因：
	 * @param buildingIdList
	 * @return List<BuildingDomain>
	 */
	public List<BuildingDomain> getBuildings(String buildingIds);

	/**
	 * 功能描述: 根据楼栋id字符串得到楼栋实体列表,filterSign 为true 则表示buildingIds是要过滤的id
	 * 如果buildingIds为空，则返回楼栋表内所有的信息<br>
	 * @param buildingIds id字符串，如：1,2,3
	 * @param filterSign 过滤标志
	 * @return List<BuildingDomain>
	 *
	 * Create author:胡煦 <br>
	 * Create on:2008-7-18  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public List<BuildingDomain> getBuildings(String buildingIds,Boolean filterSign);

	/**
	 *
	 * 功能描述: 获取楼栋住宅层楼层阿拉伯数字列表
	 *
	 * @author 付湘辉
	 * Created on:2008-6-30
	 *
	 * 修改原因：
	 * @param buildingId 楼栋id
	 * @return List 返回结果
	 */
	public List<Integer> getHouseStoreyList(Long buildingId);

	/**
	 *
	 * 功能描述: 根据楼栋单元id查询户型实体对象
	 *
	 * @author 付湘辉
	 * Created on:2008-7-1
	 *
	 * 修改原因：
	 * @param houseGrpId
	 * @return HouseGrp 返回结果
	 */
	public HouseGrp getHouseGrpById(Long houseGrpId);

	/**
	 *
	 * 功能描述: 根据楼盘id查询其所有楼栋信息
	 *
	 * @author 付湘辉
	 * Created on:2008-7-4
	 *
	 * 修改原因：
	 * @param areaId
	 * @return List<BuildingVO> 返回结果
	 */
	public List<BuildingDomain> getBuildingListByAreaId(Long areaId);

	/**
	 * 功能描述: 根据收费管理区id查询其下的所有楼栋信息列表 <br>
	 * @param precinctId 收费管理区id
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-10-21  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public List<BuildingDomain> getBuildingListByPrecinctId(Long precinctId);

	/**
	 *
	 * 功能描述: 得到指定期数下楼栋编码最大值
	 *
	 * @author 付湘辉
	 * Created on:2008-7-9
	 *
	 * 修改原因：
	 * @param projectId
	 * @return Integer 返回结果
	 */
	public Integer getMaxSeqNoByProjectId(Long projectId);

	/**
	 * 功能描述: 根据建设期id和楼栋编码参数查询指定编码 <br>
	 * @param projectId
	 * @param seqNo
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-7-16  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Integer getSeqNoBy(Long projectId, Integer seqNo);

	/**
	 * 功能描述: 根据建设期id和楼栋编码参数查询指定编码,要求id不是buildingId的楼栋<br>
	 * @param projectId
	 * @param buildingId
	 * @param seqNo
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-7-16  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Integer getSeqNoBy(Long projectId,Long buildingId, Integer seqNo);

	/**
	 * 功能描述: 根据楼盘id和楼栋名称参数查询指定楼栋实体 <br>
	 * @param areaId
	 * @param buildingName
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-7-16  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public BuildingDomain getBuildingDomainBy(Long areaId, String buildingName);

	/**
	 * 功能描述: 根据楼盘id和楼栋名称参数查询指定楼栋实体, 要求id不是buildingId的楼栋<br>
	 * @param areaId
	 * @param buildingId
	 * @param buildingName
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-7-16  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public BuildingDomain getBuildingDomainBy(Long areaId,Long buildingId, String buildingName);

	/**
	 * 功能描述:验证住宅层是否已经有房间了
	 * @param
	 * @return
	 *
	 * Create author:xuhaidui
	 * Create on:2008-8-26
	 * Edit author:
	 * Edit on:
	 * Why:
	 */
	public List validationFloor(Long keyword, Integer homeFrom, Integer homeTo);

	/**
	 * 功能描述:取出楼栋已经建了房间的最大和最小层数
	 * @param
	 * @return
	 *
	 * Create author:xuhaidui
	 * Create on:2008-8-26
	 * Edit author:
	 * Edit on:
	 * Why:
	 */
	public List<Integer> FloorMaxMin(Long keyword);

}
